package com.frank.work;

/**
 * @author 小石潭记
 * @date 2021/12/20 19:04
 * @Description: 流水线节点任务模型
 */
public abstract class AbstractPipelineNodeTask {

    /**
     * 处理方法
     * @param args 业务参数
     * @param pipelineNode 当前处理任务的节点
     * @return
     */
    public abstract Object deal(Object args, PipelineNode pipelineNode);

    /**
     * 执行任务，具体的业务处理在实现类的方法
     * @param args 业务参数
     * @param pipelineNode 当前处理任务的节点
     * @return
     */
    public Object execute(Object args, PipelineNode pipelineNode) {
        Object result = deal(args, pipelineNode);
        afterService(result);
        return result;
    }

    /**
     * 核心任务处理完成之后，可能需要做点啥（扩展业务）
     * @param result
     */
    public void afterService(Object result) {

    }
}
